אני מנסה לבנות דף HTML שיגיב לקלט מהמקלדת (יותר נכון קורא RFID המחובר למחשב ב USB ומדמה מקלדת).
הקלט משמש טריגר למשיכת נתונים מבסיס נתונים מסוג MYSQL
האם PHP היא הפלטפורמה הנכונה למימוש או שעדיף JS
בגלל בעיתיות בפונקציה readline מימשתי את הלולאה עם fgets אבל לא הצלחתי לקרוא קלט מהמקלדת
חשבתי גם על בניית אפליקציה ב C נפרדת שתקרא את הקלט ותשלח את תוכנו על בסיס TCP ל PHP


...
//open input
$f=popen("read; echo \$REPLY","r");
echo "\nSTDIN open";
$input="";
while(1)
{
$input = fgets($f,100);
if($input=="")
continue;
else $serial = $input;
....

8 תשובות

avatar ענה Splash ב 10 לנובמבר 2015 #

יכול להיות שאני סתם זה שלא מצליח להבין מה אתה עושה אבל הקוד הנוכחי שלך הוא בכלל לא דף html ואם היה כזה הוא היה ממשיך להיטען לנצח עד שתקבל timeout בגלל שיש לך לולאה אין סופית.

אפשר יהיה לקלוט את הקלט ב js בעזרת האירוע onkeypress/onkeydown העניין הוא שאם מדובר בתכנית לוקאלית למה לא לעשות אותה כבר בשפה עילית ואז יהיה לך יותר שליטה ?
שימוש ב php נראה לי מיותר לגמרי.

avatar ענה יאיר סופ ב 10 לנובמבר 2015 #

אני באמת מקבל לולאה אין סופית ו TIMEOUT.
מטרת התוכנית היא יצירת דף אינטרנט לוקאלי שהתוכן שלו דינאמי ומשתנה בהתאם לקלט מהתקן המדמה מקלדת והתקן נוסף. התוכן נשלף מDB מסוג MYSQL ולכן בחרתי PHP שמאפשר באופן קל תקשורת מול ה DB.
אשמח להמלצה על טכנולוגיה / שפה מתאימה.

avatar ענה Splash ב 10 לנובמבר 2015 #

האם אתה מודע למגבלות של העניין ? דף אינטרנט לא יכול לקבל סתם קלט מהמקלדת - אם העמוד לא יהיה בפוקוס הדפדפן לא יתיחס לקלט.

שפה עלית שתקלוט את הקלט ותשלח לאתר אינטרנט תאפשר לך יותר שליטה על קבלת הקלט עצמו.

בכל מקרה כמו שאמרתי - במידה ואתה רוצה לעשות את זה דרך אתר אינטרנט אתה תצטרך לקבל את הקלט דרך onkeypress/onkeydown ואז לשלוח בעזרת ajax את המידע לדף php והוא יחזיר לך תוצאות מהמסד.

avatar ענה intval ב 10 לנובמבר 2015 #

במקרה של עמוד ווב לוקאלי - הפתרון שלך יורכב משני חלקים:
חלק אחד שמסוגל לקרוא קלט ממקלדת או קורא rfid או כל מכשיר אחר. החלק הזה יפעל על המחשב שאליו מחוברת המקלדת וזה יכול להיות קוד js בדפדפן, אם אתה מצליח לקבל את הקלט בתוך קוד ה-js
חלק שני שיהיה מסוגל לקרוא נתונים מתוך מסד ה-mysql שיופעל על המחשב שעליו מותקן שרת mysql (גם אם זה אותה מכונה פיזית שעליה מופעל חלק א') וזה יכול להיות כתוב ב-php. אך שים לב, שהחלק הזה אך ורק מקבל נתונים מהחלק הראשון (מקוד js באמצעות בקשות ajax) ומבצע חיפוש במסד. כאן אין ל-php גישה למקלדת (או לצורך העניין, אין לה מושג על קיומה של שום מקלדת ושום קורא rfid)

אמנם, ארכיטקטורת קליינט סרבר כנראה לא הדבר העדיף במקרה הזה
ואם כל החלקים פועלים על מחשב פיזי אחד, אין סיבה שזו לא תהיה תוכנת java או c# שישירות גם קוראת מהמקלדת וגם מחפשת במסד נתונים.
אלא אם כן, אתה סגור על זה שאתה רוצה דווקא להשתמש בדפדפן בתור לקוח (ואין לך בעיה עם איבוד פוקוס) ואז הפתרון של ajax הוא מה שצריך.

avatar ענה יאיר סופ ב 10 לנובמבר 2015 #

אם כל הלוגיקה (קריאה מהמקלדת ומשיכת הנתונים מה DB) מתבצעת באמצעות תוכנית בשפה עלית כמו #C איך אני מעביר את הנתונים החדשים בדרך פשוטה להצגה בדף HTML?

avatar ענה intval ב 11 לנובמבר 2015 #

הרעיון להשתמש בשפה עלית היה כדיל מנוע את השימוש בדף html.
אם אתה מחויב בדף html - אתה מראש מוגבל בטכנולוגיה שתוכל להשתמש בה, כיוון שדף html אומר שימוש ב-javascript.
היות ש-javascript מתוך דף html לא מסוגל לקרוא ישירות מתוך מסד נתונים - עליך להוסיף חלק שני למערכת, שיכול להיות כתוב ב-php
ואת התקשורת ביניהם תצטרך לעשות באמצעות ajax.

avatar ענה Splash ב 12 לנובמבר 2015 #

למה אתה צריך להציג את זה כדף html ?

avatar ענה יאיר סופ ב 14 לנובמבר 2015 #

דף האינטרנט נקרא ומוצג על ידי מערכת שתומכת רק בדפי HTML